/* 
  记录每个请求的 url 和 ip 地址
 */
// 导入express
const express = require("express");
const fs = require("fs");
const path = require("path");

// 创建应用对象
const app = express();

// 声明中间件函数 可以为匿名函数，箭头函数....
function recordMiddleware(req, res, next) {
  // req:请求报文对象，res:响应报文对象，next:执行下一个中间件
  // 获取url 和 ip
  let { url, ip } = req;
  // 将信息保存在文件中 access.log
  fs.appendFileSync(
    // 追加
    path.resolve(__dirname, "./access.log"), //文件路径
    `${url} ${ip}\r\n` // 追加内容
  );
  // 执行后续的路由回调
  next();
}

// 使用全局中间件函数，在任何路由执行前都会先执行全局中间件
app.use(recordMiddleware);

// 创建路由
app.get("/home", (req, res) => {
  res.send("前端首页");
});

app.get("/admin", (req, res) => {
  res.send("后台首页");
});

app.all("*", (req, res) => {
  res.send("<h1>404 Not Found</h1>");
});
// 监听端口，启动服务
app.listen(3000, () => {
  console.log("服务启动成功,端口3000");
});
